package sort;

import java.util.*;

/**
 * @author sjp
 * @date 2021/9/30 12:23
 * @description 判断数组中的数字是否重复出现
 *
 * 判断数组中所有的数字是否只出现一次。
 * 给定一个数组array，判断数组 array 中是否所有的数字都只 出现过一次。
 * 例如，arr = {1, 2, 3}，输出 YES。又如，arr = {1, 2, 1}，输出 NO。约束时间复杂度为 O(n)。
 */
public class JudgeArrayRepeat {
    public static void main(String[] args) {
        int[] arr = {1,2,1};
        if (isRepeat(arr)){
            System.out.println("NO");
        }else{
            System.out.println("YES");
        }
    }


    /**
     * 判断数组中的数字是否重复出现
     *
     * @return true：重复出现  false：不重复出现
     */
    private static boolean isRepeat(int[] arr) {
        HashSet<Integer> set = new HashSet<>();

        for (int i : arr) {
            //使用Set类的add方法，如果添加不成功 表示已经存有该key，也就是出现重复
            if (!set.add(i)) {
                return true;
            }
        }
        return false;
    }
}
